﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ProbabilityThought
{
	/*
	 * 概率思想：
	 * 一：思想
      这里主要讲一下“数值概率算法”，该算法常用于解决数值计算问题，并且往往只能求得问题的近似解，同一个问题同样的概率算法求解两次可能得到的结果大不一样，不过没关系，这种“近似解”会随时间的增加而越接近问题的解。

二：特征
     现实生活中，有很多问题我们其实都得不到正确答案，只能得到近似解，比如“抛硬币”求出正面向上的概率，”抛骰子“出现1点的概率，再如：求“无理数π”的值，计算"“定积分”等等。针对这样如上的情况，使用概率算法求解是再好不过的了。

三： 举例
	数值概率中，最经典的一个题目就是“计算定积分”，设f(x)=1-x2 ,计算定积分：I = ∫01  (1-x2)dx 的值。   分析：
	 *  第一步： 我们画出函数f(x)=1-x2 在[0，1]的坐标图：
	    第二步：如果我们向矩形随机投点，那么落入“阴影区”的概率就是
        P投点=S阴影/S正方形=∫01  (1-x2)dx /∫01  (1)dx=∫01  (1-x2)dx，
        所以问题就演化为：求出随机点落入阴影区的概率即为定积分∫01  (1-x2)dx的近似值。
        比如我们向正方形投入N个点。M个点落在阴影区，则概率P=m/n;
	 */
	class Program
	{
		static void Main(string[] args)
		{
            while (true)
            {
                Console.WriteLine("阴影区的投点概率为：" + Darts(10000));
            }
		}

		static double Darts(int n)
		{
			int count = 0;
			for (int i = 0; i < n; i++)
			{
				double x = new Random().Next(0, 100) / 100.0;
				double y = new Random().Next(0, 100) / 100.0;
				if (y <= 1 - Math.Pow(x, 2))
					count++;
			}
			return (double)count / n;
		}
	}
}
